// \u4e00-\u9fa5] 中文验证规则
import validate from 'wechat-validate'
Page({
  behaviors: [validate],
  data: {
    point: '武湖新天地',
    building: '11',
    room: '1802',

    name: '小花',
    gender: 0, // 0 女； 1 男
    mobile: '13612345678',
    // 身份证照片
    idcardFrontUrl: 'http://yjy-teach-oss.oss-cn-beijing.aliyuncs.com/livimini/production/20230615/6909126360449024.jpg',
    idcardBackUrl: 'http://yjy-teach-oss.oss-cn-beijing.aliyuncs.com/livimini/production/20230615/6909126447378432.jpg',
  },
  rules: {
    name: [
      { required: true, message: '请填写手机号码!' },
      // 2-5个汉字！
      //           [0-9]: 表示从 0 到 9 之间的字符
      // [\u4e00-\u9fa5]: 表示从 一 到 龥 之间的字符
      { pattern: /^[\u4e00-\u9fa5]{2,5}$/, message: '业主姓名只能为中文!' },
    ],
    mobile: [
      { required: true, message: '请填写手机号码!' },
      { pattern: /^1[3-8]\d{9}$/, message: '请检查手机号码是否正确!' },
    ],
    idcardFrontUrl: [
      { required: true, message: '请上传身份证国徽面!' }
    ],
    idcardBackUrl: [
      { required: true, message: '请上传身份证照片面!' }
    ]
  },
  // 从上一个页面传递过来
  // 来源 1. 做编辑效果。从详情页跳转过来，会带id
  // 来源 2. 添加房屋，从room页面过来，会带point, building, room
  onLoad({ point, building, room, id }) {
    if (id) {
      // 说明是做编辑
      this.getDetail(id)
      // 更新navBarTitle
      wx.setNavigationBarTitle({
        title: '编辑房屋信息',
      })
    }
    this.setData({ point, building, room })
  },
  async getDetail(id) {
    const res = await wx.$http.get('/room/' + id)
    console.log('getdetail', res)
    this.setData({ ...res })
  },
  async goList() {
    // 整体表单校验
    const valid = this.validate()
    if (!valid) return

    // 做具体的添加，调用api
    // 右边的对象属性比较多，我们只需要其中一部分属性
    const { __webviewId__, ...data } = this.data
    // 这个接口不许有其他不必要的参数，例如：__webviewId__，而它是小程序中默认添加的值

    delete data.status // 删除一个属性

    await wx.$http.post('/room', data)
    // 回到 list页面
    // 后退4步： 好处是可以清空页面栈中不必要的页面信息
    if (this.data.id) {
      // 编辑
      wx.navigateBack({ delta: 2 })
    } else {
      wx.navigateBack({ delta: 4 })
    }
  },
  removePicture(ev) {
    // 移除图片的类型（身份证正面或反面）

    // 可选链运算符
    // const type = ev.mark?.type
    // 与下面的代码相同
    // const type = ev.mark ?  ev.mark.type || undefined

    const type = ev.mark?.type
    this.setData({ [type]: '' })
  },
  async uploadPicture(ev) {
    // console.log('上传身份证照片', ev)
    // 判断当前是要上传哪个？ idcardFrontUrl || idcardBackUrl
    const type = ev.mark.type

    // 只能传： 1张 图片
    const res = await wx.chooseMedia({ count: 1, mediaType: ['image'] })
    const filePath = res.tempFiles[0].tempFilePath

    wx.uploadFile({
      url: wx.$http.baseURL + '/upload',  // 接口文档中约定的文件上传的地址
      filePath,								// 本地文件的位置地址（临时的http打头的地址）
      name: 'file', 											// wx.uploadFile 要求必传。
      header: { 													// 接口文档中约定。 上传头像要携带token
        Authorization: 'Bearer ' + getApp().getToken() // 用户登录状态
      },
      // https://apifox.com/apidoc/shared-8d66c345-7a9a-4844-9a5a-1201852f6faa/api-42672275
      success: (result) => {
        const res = JSON.parse(result.data)
        console.log(res.data.url) 							// 上传成功的回调
        this.setData({ [type]: res.data.url })
      }
    })
  }
})
